In data storage systems having a cache, frequently accessed data is classified as “hot” and is replicated in the cache. As different data becomes hot, data already replicated in the cache needs to be removed to make room for new hot data. Least recently used lists track data blocks in the cache that have gone longest without a data access. This system replaces least recently used data blocks with new hot data blocks. This methodology does not provide optimal performance because data blocks aggressively accessed for periods in the past can skew future results when deciding what data to remove. Likewise, when the amount of active data exceeds the size of the cache, the cache can be thrashed trying to keep the most recent data in the cache.
Consequently, it would be advantageous if an apparatus existed that is suitable for prioritizing data in a cache to avoid thrashing.